package com.his.dictuserdef.service.Imp;

import com.his.dictitem.vo.DictItemCategoryVo;
import com.his.dictuserdef.dao.DictUserdefCateLinkMapper;
import com.his.dictuserdef.entity.DictUserdefCateLink;
import com.his.dictuserdef.entity.DictUserdefCateLink_Detailed;
import com.his.dictuserdef.service.DictUserdefCateLinkService;
import com.his.dictuserdef.service.DictUserdefItemEliminateService;
import com.his.dictuserdef.vo.DictUserdefCateLink_InsertVo;
import com.his.dictuserdef.vo.DictUserdefCateLink_delteItemVo;
import com.xiao.common.util.WorkIdUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;

public class DictUserdefCateLinkServiceImpl implements DictUserdefCateLinkService {

    @Autowired
    private DictUserdefCateLinkMapper dictUserdefCateLinkMapper;
    @Autowired
    private DictUserdefItemEliminateService dictUserdefItemEliminateService;

    @Override
    public List<DictUserdefCateLink_Detailed> selectAll(String cateid) {
        return dictUserdefCateLinkMapper.selectAll(cateid);
    }


    @Override
    @Transactional
    public void ResetCateLink(DictUserdefCateLink_InsertVo dictUserdefCateLink_insertVo) {
        String cateID=dictUserdefCateLink_insertVo.getCateid();
        Integer cateNo=dictUserdefCateLink_insertVo.getCateNo();
        //1.  删除所有关联目录配置
        dictUserdefCateLinkMapper.deleteByCateId(cateID);
        //2.  循环插入目录
        List<String> cateIDS=new ArrayList<String>();
        for(DictItemCategoryVo dictItemCategoryVo:dictUserdefCateLink_insertVo.getDictItemCategoryVos()){
            String linkID=WorkIdUtil.nextId();
            cateIDS.add(linkID);
            DictUserdefCateLink dictUserdefCateLink=new DictUserdefCateLink();
            dictUserdefCateLink.setId(linkID);
            dictUserdefCateLink.setCateId(cateID);
            dictUserdefCateLink.setCateNo(cateNo);
            dictUserdefCateLink.setLinkCateId(dictItemCategoryVo.getId());
            dictUserdefCateLink.setCatePid(dictItemCategoryVo.getPid());
            dictUserdefCateLink.setIsLeaf(dictItemCategoryVo.getIsLeaf());
            dictUserdefCateLink.setGrade(dictItemCategoryVo.getGrade());

            dictUserdefCateLinkMapper.insert(dictUserdefCateLink);
        }
        //3.  本次取消了的目录，删除这个目录剔除item的配置
        DictUserdefCateLink_delteItemVo dictUserdefCateLink_delteItemVo=new DictUserdefCateLink_delteItemVo();
        dictUserdefCateLink_delteItemVo.setCateID(cateID);
        dictUserdefCateLink_delteItemVo.setLinkCateIDS(cateIDS);
        dictUserdefItemEliminateService.deleteByCateidNotInlinks(dictUserdefCateLink_delteItemVo);
    }
}
